#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <sys/timeb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h> // file option
#include <dirent.h>
#include <pthread.h>
// #include <iostream>
// #include <sstream>
// #include <vector>
// #include <list>
// #include <map>
// #include <thread>
// #include <string>
// #include <iomanip>
// #include <fstream>
// #include <vector>
// #include <set>
// #include <algorithm>
// #include <unordered_map>
// #include <mutex>
// #include <atomic>
// #include <bits/wordsize.h>
// #include <bits/timesize.h>
using namespace std;

//g++ -o test test.cpp -pthread -O3
// volatile int myval = 0;//该易变变量不会被优化
int myval = 0;//使用-O3优化后，while(!myval);被永远阻塞。
void *pthrFunc(void *vp)
{
    sleep(1);
    myval = 1;
    sleep(5);
}
int main()
{
    // std::thread tmpthread = std::thread(pthrFunc);
    pthread_t tmpfd;
    pthread_create(&tmpfd, NULL, pthrFunc, NULL);
    printf("begin!\n");
    while(!myval);
    printf("finish!\n");
    pthread_join(tmpfd, NULL);
}
